package slice

func Delete[T any](src []T, index int) ([]T, T, error) {
	// 1. 越界判断
	err := Base[T](src, index)
	if err != nil {
		var zero T
		return nil, zero, err
	}

	// 2. 保存要删除的元素
	res := src[index]
	length := len(src)

	// 3.将被删除元素的后面元素， 向前平移一位
	for i := index; i < length; i++ {
		src[i] = src[i+1]
	}

	// 4.去掉最后一个重复的元素
	src = src[:length-1]
	return src, res, nil
}
